# python中定义列表（列表等同于Java中的数组）
bicycles = ['abc', 'def', 'ghi']
print(bicycles)

# 访问列表元素
print(bicycles[0].title())

# 对列表元素的删除、修改、添加、插入
# 修改
bicycles[0] = 'qwe'
print(bicycles)
# 添加(append:在尾部添加列表元素)
bicycles.append('asd')
print(bicycles)
# 插入(insert:第一个参数为要插入的位置，第二个参数为插入的元素)
bicycles.insert(0, 'zxc')
print(bicycles)
# 删除元素
# del:在del 后面跟上列表名以及相应的下标
del bicycles[0]
print(bicycles)
# pop:将列表中的元素弹出(括号中不添加数字默认将最后一个元素进行弹出列表)
print(bicycles.pop())
print(bicycles)
print(bicycles.pop(1))
print(bicycles)
# remove：根据值删除相应的列表元素
bicycles.remove('ghi')
print(bicycles)
print("\n")

# 组织列表的函数
cars = ['bmw', 'audi', 'toyota', 'subaru']
# 正序(列表顺序将永久改变)
cars.sort()
print(cars)
# 逆序(列表顺序将永久改变)
cars.sort(reverse=True)
# 临时改变列表顺序
print(sorted(cars))
print(cars)
# 倒着打印列表
cars.reverse()
print(cars)
# 确定列表的长度
print(len(cars))
print("\n")

# 操作列表
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
    print(magician)
# 函数range()
for value in range(1, 6):
    print(value)
# 使用range()创建数字列表
numbers = list(range(1, 5))
print(numbers)
# 列表元素每次增加2个单位
numbers = list(range(1, 11, 2))
print(numbers)
# 简单例子
squares = []
for value in range(1, 11):
    squares.append(value**2)
print(squares)
# 将上面的代码进行解析可以简化代码
squares = [value**2 for value in range(1, 11, 2)]
print(squares)
# min()、max()、sum()函数的使用
digits = [1, 2, 3, 4, 5]
print(min(digits))
print(max(digits))
print(sum(digits))
print("\n")

# 使用列表中的一部分
# 切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])
print(players[:3])
print(players[0:])
# 遍历切面
for player in players[:3]:
    print(player.title())
# 复制列表
my_foods = ['pizza', 'falafel', 'carrot cake']
# 下面的语句为将my_foods[:]列表内容复制到friend_foods列表中
friend_foods = my_foods
friend1_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("My friend's favorite foods are:")
print(friend_foods)
print("My friend1's favorite foods are:")
print(friend1_foods)
print("\n")

# 不可变的列表（元组:不允许元组的值进行修改）
# 使用圆括号创建元组
dimensions = (200, 50)
# dimensions[0] = 250
print(dimensions[0])
print(dimensions[1])
for dimension in dimensions:
    print(dimension)
